/**
* 路由管理
* @Author： 兔兔 ^_^o~ 努力！
* @Date： 2020/11/22 14:49
 */

package router

import (
	"ginFrameDemo/app/controllers"
	"ginFrameDemo/router/middleware"
	"github.com/gin-gonic/contrib/sessions"
	"github.com/gin-gonic/gin"
)

//初始化路由
func InitRouter(middlewares ...gin.HandlerFunc) *gin.Engine  {
	router := gin.Default()
	router.Use(middlewares...)
	router.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})


	sessionName := "ginFrameDemo" // session名字

	router.LoadHTMLGlob("app/views/**/*") //加载多层模版文件

	router.Static("/static","./static")//加载静态资源

	//路由分组

	//非登陆接口
	//创建 session 实例  session的key 是 secret
	store := sessions.NewCookieStore([]byte("secret"))
	apiNormalGroup := router.Group("/login")
	apiNormalGroup.Use(
		sessions.Sessions(sessionName, store),//session
		middleware.RecoveryMiddleware(),// 崩溃捕获
		middleware.RequestLog(),//请求日志
		middleware.TranslationMiddleware())//多语言处理
	{
		controllers.LoginRegister(apiNormalGroup)
	}

	//登陆接口
	userGroup := router.Group("/user")
	userGroup.Use(
		sessions.Sessions(sessionName, store),
		middleware.RecoveryMiddleware(),// 崩溃捕获
		middleware.RequestLog(),//请求日志
		//middleware.SessionAuthMiddleware(),// session 校验 没有登陆 直接返回
		middleware.TranslationMiddleware())//多语言处理
	{
		controllers.UserRegister(userGroup)
	}


	return router
}
